kafka遇到Error while fetching metadata xxx: {LEADER | 您所在的位置:网站首页 › collect file 37 › kafka遇到Error while fetching metadata xxx: {LEADER |
网上和本人遇到的不太一样: 有几种情况: 1.少broker或者broker没有运行:https://www.cnblogs.com/yoyowin/p/13091694.html 2.kafka的IP配置为外网IP,但是外网端口没屏蔽的:https://blog.csdn.net/lsr40/article/details/92789081 本人是运维重启kafka,没有做任何修改,验证是否正常重启时, 1. 启动kafka-console-producer.sh 2.启动kafka-console-consumer.sh 报错:Error while fetching metadata with correlation id 62 : {my_test_topic=LEADER_NOT_AVAILABLE} 但是生产消息和消费消息都正常!启动测试工具大量消费数据也正常!所以这个Error应该是一直存在。看了些资料和本人遇到的都不一样,但是大致是说两个kafka的IP配置 本人kafak配置: # The address the socket server listens on. It will get the value returned from # java.net.InetAddress.getCanonicalHostName() if not configured. # FORMAT: # listeners = listener_name://host_name:port # EXAMPLE: # listeners = PLAINTEXT://your.host.name:9092 listeners=PLAINTEXT://:9092 # Hostname and port the broker will advertise to producers and consumers. If not set, # it uses the value for "listeners" if configured. Otherwise, it will use the value # returned from java.net.InetAddress.getCanonicalHostName(). advertised.listeners=PLAINTEXT://192.168.1.56:9092 第一尝试:把listeners改成主机名,但是重启时报错,重复了。 第二尝试:测试网listeners配的是内网IP,和advertised.listeners相同。这种方式是正常的。 =========================================================================================== 以下转栽:https://blog.csdn.net/lsr40/article/details/92789081 [Producer clientId=console-producer] Error while fetching metadata with correlation id 62 : {my_test_topic=LEADER_NOT_AVAILABLE} 我发现有人的报错和我一样,报错就是类似这个:https://www.orchome.com/1108 情况大概是这样的,需要检查几个地方: 1、kafka服务是否正常? -1.我们kafka服务是通过CM启动的,可以在CM上面查看运行情况(我这个报错,CM上看是正常的) -2.可以去到具体启动kafka的那几台机器上通过:jps -ml来查看(jps -ml可以查看该broker启动的时候我读取哪个配置文件),这个很关键!因为如果服务用A配置文件启动,结果你改的是B配置文件,就算你把B配置文件改上天了,都不会生效的!!
2、是否是自己的代码或者其他东西写错了? 当你确认服务正常的时候,那么可以使用自带的生产者和消费者来测试,因为这个是可以确保生产者和消费者没问题的一个点(因为你手写的生产者或者消费者代码有可能会有问题啊!!!) 测试命令如下: 1、创建topic kafka-topics.sh --create --zookeeper zk1:2181 --replication-factor 1 --partitions 1 --topic mytest_topic 2、开启生产者: kafka-console-producer.sh --broker-list kafka1:9092,kafka2:9092... --topic mytest_topic
3-1、消费者操作: kafka-console-consumer.sh --broker-list kafka1:9092,kafka2:9092... --from-beginning --topic mytest_topic 3-2、也可以这么开启消费者: bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic topic mytest_topic 结果我就是在这一步开启生产者要发数据的时候报错了!!! 3、如何解决该报错? 当我通过前两步确认了你的环境没什么大问题,但是却发送不了数据,我开始静下心来看报错! 1、Error while fetching metadata (获取元数据异常) 2、LEADER_NOT_AVAILABLE (无法获取该topic的leader)也就是说,很可能是注册在zookeeper上的信息有问题!通过新创建topic,也不能发送消息的情况,我确认了,这个异常跟topic没有什么关系,所以肯定还是broker的问题! 因此我回想起了之前的事情: 【kafka】报错:advertised.listeners参数的重要性(外部访问局域网kafka):https://blog.csdn.net/lsr40/article/details/84135959 这个集群的advertised.listeners参数,还是外网的ip和端口,是不是有可能这个外网ip和端口被运维关掉了的原因,导致节点之间通讯异常,topic选不出leader呢(因为topic是通过leader来与生产者和消费者交互的,这部分知识大家可以自行百度,或者查阅我的kafka的相关文章) 果然经过我的确认,确实那个ip和外网端口已经关闭,所以我将kafka的配置文件进行修改: advertised.listeners改成内网ip(默认当前机器的ip) advertised.port改成内网端口(默认9092)重启kafka服务,就修好了该kafka环境 ======================================================================
|
CopyRight 2018-2019 实验室设备网 版权所有 |